package com.zyf.project.capchain.service;

import com.zyf.project.capchain.listener.result.impl.Result;
import com.zyf.project.capchain.model.User;

/**
 * <h1>用户信息服务</h1>
 * <p>该服务包含用户的添加、查询，虽然包括但是不建议使用修改和删除，该服务不对 Redis 进行修改，建议后台管理系统相关的 API 调用，不建议客户端相关 API 调用</p>
 * @author Zhou Yifan
 */
public interface UserService {

    /**
     * 添加用户
     *
     * @param user 用户对象
     * @return 处理结果
     */
    Result<User> addUser(User user);

    /**
     * 修改用户
     *
     * @param user 用户对象
     * @return 处理结果
     * @deprecated <p>
     *     <b>不建议使用修改</b>
     *     <ol>
     *         <li>一般人员无权修改用户数据</li>
     *         <li>容易导致客户端数据错误</li>
     *     </ol>
     * </p>
     */
    @Deprecated
    Result<User> modifyUser(User user);

    /**
     * 根据 uid 获取用户
     *
     * @param uid 用户id
     * @return 处理结果
     */
    Result<User> getUserByUid(Long uid);

    /**
     * 根据 openid 获取用户
     *
     * @param openid 唯一标识符
     * @return 处理结果
     */
    Result<User> getUserByOpenid(String openid);

    /**
     * 删除用户
     *
     * @param user 用户对象
     * @return 处理结果
     * @deprecated <p>
     *     <b>不建议使用修改</b>
     *     <ol>
     *         <li>一般人员无权修改用户数据</li>
     *         <li>容易导致客户端数据错误</li>
     *     </ol>
     * </p>
     */
    @Deprecated
    Result<User> deleteUser(User user);

}
